


var MaquinaDeLavar = (function(con) {

    function criarInterface() {
        return {
            ligar: function() {
                con.send('{"act":"ligar", "equip":"maquinadelavar", "param":true}');
            },
            desligar: function() {
                con.send('{"act":"ligar", "equip":"maquinadelavar", "param":false}');
            },
            iniciarLavagem: function() {
                con.send('{"act":"iniciar", "equip":"maquinadelavar"}');
            },
            pararLavagem: function() {
                con.send('{"act":"parar", "equip":"maquinadelavar"}');
            },
            pularFuncao: function() {
                con.send('{"act":"pularfuncao", "equip":"maquinadelavar"}');
            },
            voltarFuncao: function() {
                con.send('{"act":"voltarfuncao", "equip":"maquinadelavar"}');
            }
        };
    }

    return function() {
        return criarInterface();
    };
})(conexao);


/**
 * O vendedor da máquina de lavar disponibilizou apenas o controle e não
 * a interface de comunicação com a máquina.
 * 
 * Tarefa: Adaptar esse controle.
 */
var ControleDaMaquina = (function() {
    var maquina = new MaquinaDeLavar();
    var funcPower = true;
    return{
        power: function() {
            if (funcPower) {
                maquina.ligar();
            } else {
                maquina.desligar();
            }
            funcPower = !funcPower;
        },
        iniciar: function() {
            maquina.iniciarLavagem();
        },
        parar: function() {
            maquina.pararLavagem();
        },
        pular: function() {
            maquina.pularFuncao();
        },
        voltar: function() {
            maquina.voltarFuncao();
        }
    };
    
})();